This analysis explores whether the clusters identified in our previous PCA and clustering analysis provide a meaningful way to categorize countries into traditional international relations categories such as “great powers,” “middle powers,” and so on. We’ll examine the composition of each cluster, the stability of cluster membership over time, and evaluate the face validity of using these clusters as a basis for status categorization.
First, we’ll load the integrated status dataset created in the previous analysis:
# Load the integrated status dimensions data
integrated_status <- read.csv("/Users/yutianyi/Desktop/MA thesis data creation/integrated_status_dimensions.csv", stringsAsFactors = FALSE)
# Preview the data
glimpse(integrated_status)## Rows: 1,505
## Columns: 29
## $ country <chr> "Czechoslovakia", "Egypt", "France", "Ind…
## $ recognition_count <int> 39, 58, 82, 55, 33, 36, 73, 58, 32, 23, 4…
## $ weighted_recognition <dbl> 49.625, 60.250, 75.500, 43.750, 31.750, 3…
## $ eigenvector_centrality <dbl> 0.52822030, 0.71045720, 1.00000000, 0.660…
## $ pagerank <dbl> 0.012528771, 0.019578976, 0.037892397, 0.…
## $ authority <dbl> 0.54672243, 0.72487574, 1.00000000, 0.665…
## $ betweenness <dbl> 0.0244847825, 0.0001410069, 0.0260780360,…
## $ recognition_rate <dbl> 0.39393939, 0.58585859, 0.82828283, 0.555…
## $ network_inconsistency <dbl> 0.2902262, 0.8616718, 1.2127113, 0.540182…
## $ outgoing_ties <int> 59, 61, 83, 44, 34, 32, 78, 60, 44, 25, 5…
## $ recognition_balance <int> -20, -3, -1, 11, -1, 4, -5, -2, -12, -2, …
## $ recognition_ratio <dbl> 0.6610169, 0.9508197, 0.9879518, 1.250000…
## $ recognition_status_pca <dbl> 0.5300235, 0.7343870, 1.0000000, 0.641582…
## $ prestige_status_pca <dbl> 0.43957121, 0.62576816, 1.00000000, 0.604…
## $ brokerage_status_pca <dbl> 0.38788572, 0.32058496, 0.63613453, 0.604…
## $ overall_status_network_pca <dbl> 0.5032924, 0.6427105, 1.0000000, 0.656207…
## $ year <int> 1960, 1960, 1960, 1960, 1960, 1960, 1960,…
## $ external_internal_ratio <dbl> 0.6610169, 0.9508197, 0.9879518, 1.250000…
## $ attribute_status_pca <dbl> -1.47260670, -1.59817226, 2.71194106, 0.2…
## $ attribute_status_pca_z <dbl> -0.642036308, -0.696781170, 1.182369075, …
## $ overall_status_network_pca_z <dbl> 0.98399426, 1.66919367, 3.42516686, 1.735…
## $ combined_status_score <dbl> 0.17097897, 0.48620625, 2.30376797, 0.926…
## $ attribute_status_quartile <int> 2, 2, 4, 4, 2, 2, 4, 4, 2, 1, 4, 4, 4, 1,…
## $ network_status_quartile <int> 4, 4, 4, 4, 4, 3, 4, 4, 3, 2, 4, 4, 4, 3,…
## $ combined_status_quartile <int> 3, 4, 4, 4, 3, 3, 4, 4, 3, 2, 4, 4, 4, 2,…
## $ status_type <chr> "Upper-Middle Status", "High Status", "Hi…
## $ status_inconsistency <dbl> 1.6260306, 2.3659748, 2.2427978, 1.617973…
## $ cluster <int> 3, 3, 4, 3, 3, 3, 4, 4, 3, 1, 3, 4, 4, 1,…
## $ hc_cluster <int> 1, 2, 3, 2, 1, 1, 2, 2, 1, 4, 1, 3, 3, 4,…
Let’s examine the basic structure of our clusters and status measures:
# Create a summary of cluster sizes
cluster_summary <- integrated_status %>%
group_by(year, cluster) %>%
summarise(count = n()) %>%
ungroup()
# Display summary
ggplot(cluster_summary, aes(x = as.factor(year), y = count, fill = as.factor(cluster))) +
geom_bar(stat = "identity", position = "dodge") +
labs(x = "Year", y = "Number of Countries", fill = "Cluster",
title = "Distribution of Countries Across Clusters by Year") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))Let’s examine which countries belong to each cluster and how this varies over time:
# Create a function to identify the top N countries in each cluster by status score
top_countries_by_cluster <- function(data, n = 5) {
data %>%
group_by(year, cluster) %>%
top_n(n, combined_status_score) %>%
arrange(year, cluster, desc(combined_status_score)) %>%
select(year, cluster, country, combined_status_score,
attribute_status_pca, overall_status_network_pca) %>%
ungroup()
}
# Get top 5 countries in each cluster by combined status score
top_countries <- top_countries_by_cluster(integrated_status, 5)
# Display the results
top_countries %>%
kable("html", caption = "Top 5 Countries by Status Score Within Each Cluster") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE) %>%
collapse_rows(columns = c(1, 2), valign = "top")| year | cluster | country | combined_status_score | attribute_status_pca | overall_status_network_pca |
|---|---|---|---|---|---|
| 1960 | 1 | Nicaragua | -0.2843814 | -1.1405148 | 0.2885272 |
| Guatemala | -0.2959789 | -1.1960687 | 0.2887359 | ||
| Luxembourg | -0.3073178 | 0.5174026 | 0.1321187 | ||
| China | -0.3131318 | -1.0356705 | 0.2675266 | ||
| Costa Rica | -0.3338178 | -1.0835529 | 0.2633563 | ||
| 3 | India | 0.9265412 | 0.2696291 | 0.6562076 | |
| Canada | 0.8265461 | 0.6136398 | 0.5849980 | ||
| Brazil | 0.8009837 | -0.0947567 | 0.6374379 | ||
| Turkey | 0.6546328 | 0.2334019 | 0.5487705 | ||
| Argentina | 0.6133013 | -0.6390619 | 0.6093477 | ||
| 4 | United States | 3.0086128 | 6.1283449 | 0.9837599 | |
| France | 2.3037680 | 2.7119411 | 1.0000000 | ||
| United Kingdom | 2.0454482 | 3.1076800 | 0.8597727 | ||
| Italy | 1.5800123 | 1.5191395 | 0.8112876 | ||
| Japan | 1.1205146 | 0.0166844 | 0.7575823 | ||
| 1965 | 1 | Luxembourg | -0.2438937 | 0.9771765 | 0.1171418 |
| Ecuador | -0.3096979 | -1.2937576 | 0.2918191 | ||
| Tunisia | -0.3347619 | -1.5704337 | 0.3061636 | ||
| New Zealand | -0.3563538 | -0.0775907 | 0.1649460 | ||
| Bolivia | -0.3726632 | -1.4621200 | 0.2811314 | ||
| 2 | United States | 3.4211763 | 7.8378288 | 1.0000000 | |
| 3 | Canada | 0.7551738 | 1.0552218 | 0.5167807 | |
| Turkey | 0.7269994 | 1.1883666 | 0.4935040 | ||
| Egypt | 0.6486021 | -1.1041608 | 0.6649722 | ||
| Denmark | 0.6281872 | 1.4551966 | 0.4296226 | ||
| Sweden | 0.5913316 | 0.4599058 | 0.5029173 | ||
| 4 | United Kingdom | 2.2126755 | 3.4647818 | 0.8961458 | |
| France | 2.1987822 | 3.2014612 | 0.9138513 | ||
| Italy | 1.6494158 | 2.2384985 | 0.7757161 | ||
| Belgium | 1.3147396 | 1.8547217 | 0.6735674 | ||
| India | 1.2148042 | 0.9983097 | 0.7088722 | ||
| 1970 | 1 | Philippines | -0.2200956 | -0.5467268 | 0.2620125 |
| Ecuador | -0.2707081 | -1.0911051 | 0.2897082 | ||
| Luxembourg | -0.2714858 | 0.9846253 | 0.1052526 | ||
| New Zealand | -0.3274484 | -0.1405439 | 0.1822935 | ||
| Malaysia | -0.3582475 | -0.7539790 | 0.2241782 | ||
| 2 | United States | 3.6065137 | 8.6880271 | 1.0000000 | |
| 3 | Egypt | 0.8883168 | -0.7166147 | 0.7281427 | |
| Turkey | 0.6895189 | 1.2257475 | 0.4749356 | ||
| Brazil | 0.6893366 | -0.1402031 | 0.5960356 | ||
| Denmark | 0.6178748 | 1.5659945 | 0.4155971 | ||
| Sweden | 0.5772023 | 0.5673141 | 0.4876392 | ||
| 4 | France | 2.1508980 | 3.3316843 | 0.8828131 | |
| United Kingdom | 2.0271376 | 3.4548239 | 0.8215260 | ||
| Italy | 1.5210700 | 2.3186821 | 0.7163737 | ||
| Japan | 1.3775047 | 1.9329419 | 0.6921702 | ||
| India | 1.3293003 | 1.5117982 | 0.7099137 | ||
| 1975 | 1 | New Zealand | -0.1642187 | 0.3175007 | 0.2080851 |
| Luxembourg | -0.1793019 | 1.4253427 | 0.1036699 | ||
| Philippines | -0.2310188 | -0.5402937 | 0.2569967 | ||
| Ireland | -0.2376090 | 0.1365024 | 0.1942759 | ||
| Costa Rica | -0.2382184 | -0.6949750 | 0.2677887 | ||
| 2 | United States | 3.6548453 | 8.9097384 | 1.0000000 | |
| 3 | Brazil | 0.7930436 | 0.6130492 | 0.5714169 | |
| Turkey | 0.7531362 | 1.7482444 | 0.4544731 | ||
| Sweden | 0.7426823 | 1.1954735 | 0.4992556 | ||
| Austria | 0.7280688 | 0.9128713 | 0.5183785 | ||
| Denmark | 0.6922060 | 2.1096009 | 0.3976220 | ||
| 4 | France | 2.2124225 | 3.9669475 | 0.8514954 | |
| United Kingdom | 2.0544217 | 3.9457446 | 0.7890792 | ||
| Japan | 1.5899470 | 2.3320775 | 0.7432143 | ||
| India | 1.5360593 | 2.2526930 | 0.7283274 | ||
| Italy | 1.5204139 | 2.8104917 | 0.6724780 | ||
| 1980 | 1 | Ireland | -0.0975373 | 0.3426375 | 0.2329906 |
| Luxembourg | -0.1068092 | 1.5255504 | 0.1242807 | ||
| New Zealand | -0.2015616 | 0.0989663 | 0.2122750 | ||
| Jamaica | -0.2329043 | 0.0710263 | 0.2019989 | ||
| Gabon | -0.2641353 | -0.6422114 | 0.2525614 | ||
| 2 | United States | 3.7345839 | 9.2755234 | 1.0000000 | |
| 3 | Austria | 0.8616374 | 1.0510623 | 0.5604742 | |
| Turkey | 0.8610542 | 1.4594796 | 0.5240059 | ||
| Denmark | 0.8243299 | 2.3512872 | 0.4299486 | ||
| Greece | 0.7621914 | 1.5577218 | 0.4750594 | ||
| Egypt | 0.7530382 | -0.0945834 | 0.6179115 | ||
| 4 | France | 2.3027900 | 3.8097642 | 0.9022135 | |
| United Kingdom | 2.1107535 | 3.6153993 | 0.8413081 | ||
| China | 1.9536645 | 4.5920793 | 0.6907402 | ||
| Belgium | 1.5738503 | 2.6008124 | 0.7128242 | ||
| Japan | 1.5694991 | 2.8473548 | 0.6891827 | ||
| 1985 | 1 | Luxembourg | -0.0239086 | 1.7179362 | 0.1409497 |
| Ireland | -0.1222942 | 0.5434181 | 0.2051047 | ||
| Nicaragua | -0.1826549 | -0.2518474 | 0.2510898 | ||
| Costa Rica | -0.1864010 | -0.2223379 | 0.2469475 | ||
| Gabon | -0.1879268 | -0.4415426 | 0.2657724 | ||
| 2 | United States | 3.9938613 | 10.4649067 | 1.0000000 | |
| 3 | Turkey | 0.8546637 | 2.0374286 | 0.4701352 | |
| Denmark | 0.7588002 | 2.5153633 | 0.3887265 | ||
| Egypt | 0.7579088 | 0.1336561 | 0.5996463 | ||
| Australia | 0.7328941 | 1.6152845 | 0.4580307 | ||
| Portugal | 0.7206726 | 2.0167846 | 0.4174400 | ||
| 4 | France | 2.1575102 | 4.3357761 | 0.7964303 | |
| United Kingdom | 2.1513962 | 3.8691383 | 0.8353380 | ||
| China | 2.0739836 | 5.1932826 | 0.6863700 | ||
| Belgium | 1.7662236 | 2.8095420 | 0.7725925 | ||
| Italy | 1.7277926 | 3.7564760 | 0.6729503 | ||
| 1990 | 1 | Luxembourg | 0.0097770 | 1.9140187 | 0.1372633 |
| Ireland | -0.0461653 | 0.7817750 | 0.2149399 | ||
| Costa Rica | -0.1315831 | 0.0167640 | 0.2480444 | ||
| Bolivia | -0.1669810 | 0.0883618 | 0.2272880 | ||
| Jamaica | -0.1871924 | 0.6239628 | 0.1715497 | ||
| 2 | United States | 4.2931486 | 11.8378274 | 1.0000000 | |
| 3 | Algeria | 0.8625321 | 1.0226548 | 0.5633583 | |
| Nigeria | 0.8166040 | 1.1509300 | 0.5332889 | ||
| Greece | 0.8120446 | 2.3020735 | 0.4293150 | ||
| Austria | 0.7764210 | 1.3978516 | 0.4950322 | ||
| Venezuela | 0.7593244 | 1.4969939 | 0.4792799 | ||
| 4 | France | 2.3556482 | 4.8740521 | 0.8293102 | |
| China | 2.2960675 | 5.9565274 | 0.7090374 | ||
| United Kingdom | 2.2389526 | 4.3243279 | 0.8305882 | ||
| Germany | 1.9980488 | 3.7127177 | 0.7868106 | ||
| Italy | 1.8713244 | 4.2883427 | 0.6841772 | ||
| 1995 | 1 | Jamaica | -0.0331579 | 1.2481155 | 0.1788639 |
| Bolivia | -0.0447757 | 0.7841345 | 0.2152961 | ||
| Paraguay | -0.0573059 | 1.1147095 | 0.1808715 | ||
| Cameroon | -0.0791206 | 0.6129238 | 0.2165079 | ||
| Ukraine | -0.0981995 | 0.3705127 | 0.2302483 | ||
| 2 | United States | 4.5327478 | 12.9369410 | 1.0000000 | |
| China | 3.0840259 | 8.8498392 | 0.7730234 | ||
| 3 | Switzerland | 0.8599963 | 1.6795173 | 0.5040558 | |
| Finland | 0.7825398 | 2.9709460 | 0.3579722 | ||
| Pakistan | 0.7646739 | 1.5598314 | 0.4758825 | ||
| Poland | 0.7434127 | 1.3055188 | 0.4897906 | ||
| Romania | 0.7071111 | 1.0588309 | 0.4969018 | ||
| 4 | France | 2.7983754 | 6.2662695 | 0.8859701 | |
| Germany | 2.6295904 | 5.6276299 | 0.8739385 | ||
| United Kingdom | 2.5409477 | 5.3205022 | 0.8651115 | ||
| Belgium | 2.3399085 | 4.3954879 | 0.8653588 | ||
| Russia | 2.2483705 | 3.9911859 | 0.8639740 | ||
| 2000 | 1 | Nicaragua | -0.0646139 | 0.6838338 | 0.2161208 |
| Gabon | -0.1129269 | 0.2761624 | 0.2326250 | ||
| Jamaica | -0.1130860 | 1.2145774 | 0.1493130 | ||
| Sri Lanka | -0.1335834 | 0.2662712 | 0.2250965 | ||
| Paraguay | -0.1436962 | 0.9524493 | 0.1601099 | ||
| 2 | United States | 4.5893171 | 13.1964415 | 1.0000000 | |
| China | 3.7406740 | 11.9423507 | 0.7659027 | ||
| 3 | Nigeria | 0.8595245 | 1.8778728 | 0.4862676 | |
| Venezuela | 0.7606974 | 2.0797214 | 0.4281446 | ||
| Algeria | 0.7312850 | 1.8032085 | 0.4407051 | ||
| Switzerland | 0.7303827 | 1.5564415 | 0.4622287 | ||
| Czech Republic | 0.7251529 | 1.5363203 | 0.4618855 | ||
| 4 | France | 2.6410322 | 5.9663280 | 0.8485486 | |
| Germany | 2.5866559 | 5.2215703 | 0.8924884 | ||
| United Kingdom | 2.4678750 | 5.2258200 | 0.8437745 | ||
| Russia | 2.2023021 | 4.6771401 | 0.7843754 | ||
| India | 2.1488373 | 6.3091552 | 0.6178415 | ||
| 2005 | 1 | Latvia | 0.0709662 | 1.8441304 | 0.1683635 |
| Lithuania | 0.0536703 | 1.9556479 | 0.1514323 | ||
| Estonia | 0.0335697 | 1.8634512 | 0.1514313 | ||
| Cyprus | -0.0059107 | 1.0643061 | 0.2062577 | ||
| Guatemala | -0.0409631 | 0.9336781 | 0.2035815 | ||
| 2 | United States | 5.1039043 | 15.5570073 | 1.0000000 | |
| China | 4.2277722 | 13.4778889 | 0.8279049 | ||
| 3 | Switzerland | 0.8428128 | 2.0346482 | 0.4655593 | |
| Malaysia | 0.8050772 | 1.5259106 | 0.4953334 | ||
| Romania | 0.7994892 | 2.1560965 | 0.4371553 | ||
| Finland | 0.7572825 | 2.9549674 | 0.3491114 | ||
| Venezuela | 0.7312526 | 1.9189672 | 0.4304229 | ||
| 4 | France | 2.6819014 | 6.1692839 | 0.8471756 | |
| Germany | 2.5517816 | 5.2664615 | 0.8743143 | ||
| India | 2.4902800 | 7.1007166 | 0.6865690 | ||
| United Kingdom | 2.4284629 | 5.2790343 | 0.8230154 | ||
| Italy | 2.2089925 | 5.4902603 | 0.7149657 | ||
| 2010 | 1 | Bolivia | 0.0269319 | 1.6532811 | 0.1673745 |
| Costa Rica | -0.0263668 | 0.9074562 | 0.2118475 | ||
| Dominican Republic | -0.0286012 | 0.9603395 | 0.2062470 | ||
| Paraguay | -0.0677363 | 1.2596196 | 0.1637719 | ||
| Gabon | -0.0730384 | 0.8762086 | 0.1956269 | ||
| 2 | China | 5.6727886 | 19.4158066 | 0.8891867 | |
| United States | 5.4776873 | 17.2716626 | 1.0000000 | ||
| India | 2.8659886 | 8.3185222 | 0.7314283 | ||
| 3 | Pakistan | 0.8113777 | 1.7681366 | 0.4764094 | |
| Iran | 0.7437685 | 0.6747813 | 0.5458885 | ||
| Venezuela | 0.6336676 | 1.5321589 | 0.4250254 | ||
| Morocco | 0.6155613 | 0.9422647 | 0.4699870 | ||
| Kenya | 0.6107753 | 1.7460177 | 0.3967380 | ||
| 4 | France | 2.6337890 | 6.0536022 | 0.8378588 | |
| Germany | 2.5928686 | 5.2742475 | 0.8903436 | ||
| United Kingdom | 2.4281251 | 5.0898675 | 0.8396590 | ||
| Russia | 2.3729813 | 5.4135809 | 0.7885019 | ||
| Japan | 2.2420667 | 4.6784561 | 0.8004406 |
Let’s examine the characteristics of each cluster:
# Calculate mean values of key metrics for each cluster
cluster_characteristics <- integrated_status %>%
group_by(year, cluster) %>%
summarise(
n_countries = n(),
mean_attribute_status = mean(attribute_status_pca),
mean_network_status = mean(overall_status_network_pca),
mean_combined_status = mean(combined_status_score),
mean_status_inconsistency = mean(status_inconsistency)
) %>%
ungroup()
# Display characteristics
cluster_characteristics %>%
kable("html", caption = "Characteristics of Each Cluster by Year") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)| year | cluster | n_countries | mean_attribute_status | mean_network_status | mean_combined_status | mean_status_inconsistency |
|---|---|---|---|---|---|---|
| 1960 | 1 | 45 | -2.4061745 | 0.1952739 | -0.7894427 | 0.5842668 |
| 1960 | 3 | 35 | -0.8475384 | 0.4546693 | 0.1877555 | 1.1145413 |
| 1960 | 4 | 7 | 2.3123789 | 0.8089698 | 1.7472375 | 1.4781440 |
| 1965 | 1 | 63 | -1.9544334 | 0.1777041 | -0.7341415 | 0.3936052 |
| 1965 | 2 | 1 | 7.8378288 | 1.0000000 | 3.4211763 | 0.0079811 |
| 1965 | 3 | 38 | -0.7567856 | 0.4274731 | 0.1407083 | 0.9548932 |
| 1965 | 4 | 7 | 2.0804849 | 0.7338434 | 1.5120739 | 1.2100221 |
| 1970 | 1 | 69 | -1.9624387 | 0.1597341 | -0.7800453 | 0.3920085 |
| 1970 | 2 | 1 | 8.6880271 | 1.0000000 | 3.6065137 | 0.3626937 |
| 1970 | 3 | 43 | -0.7906142 | 0.4212024 | 0.1179246 | 0.9590860 |
| 1970 | 4 | 8 | 2.2060216 | 0.6916526 | 1.4357624 | 0.9479345 |
| 1975 | 1 | 71 | -1.7687588 | 0.1601922 | -0.7366987 | 0.4083594 |
| 1975 | 2 | 1 | 8.9097384 | 1.0000000 | 3.6548453 | 0.4593568 |
| 1975 | 3 | 50 | -0.4588504 | 0.4277142 | 0.2062486 | 0.8805709 |
| 1975 | 4 | 10 | 2.4448457 | 0.6898696 | 1.4834428 | 0.8425453 |
| 1980 | 1 | 70 | -1.6963416 | 0.1519706 | -0.7411156 | 0.3915649 |
| 1980 | 2 | 1 | 9.2755234 | 1.0000000 | 3.7345839 | 0.6188340 |
| 1980 | 3 | 55 | -0.4418611 | 0.4350379 | 0.2279490 | 0.8953588 |
| 1980 | 4 | 13 | 2.6374859 | 0.6743074 | 1.4871952 | 0.6894733 |
| 1985 | 1 | 72 | -1.4231518 | 0.1482342 | -0.6907438 | 0.4174034 |
| 1985 | 2 | 1 | 10.4649067 | 1.0000000 | 3.9938613 | 1.1373888 |
| 1985 | 3 | 55 | -0.1053231 | 0.3972253 | 0.2083930 | 0.6625145 |
| 1985 | 4 | 12 | 3.2623351 | 0.6478800 | 1.5584666 | 0.4440401 |
| 1990 | 1 | 69 | -1.1834023 | 0.1471690 | -0.6410975 | 0.4698376 |
| 1990 | 2 | 1 | 11.8378274 | 1.0000000 | 4.2931486 | 1.7359634 |
| 1990 | 3 | 50 | 0.2745902 | 0.4017564 | 0.3023459 | 0.5553502 |
| 1990 | 4 | 18 | 3.4112636 | 0.6230846 | 1.5300011 | 0.4796901 |
| 1995 | 1 | 81 | -0.7077138 | 0.1303413 | -0.5787525 | 0.6168233 |
| 1995 | 2 | 2 | 10.8933901 | 0.8865117 | 3.8083868 | 1.8819635 |
| 1995 | 3 | 49 | 0.6758879 | 0.3682670 | 0.3075308 | 0.5863831 |
| 1995 | 4 | 27 | 3.8140667 | 0.6004098 | 1.5620894 | 0.5667486 |
| 2000 | 1 | 83 | -0.4608961 | 0.1313870 | -0.5223783 | 0.6813027 |
| 2000 | 2 | 2 | 12.5693961 | 0.8829513 | 4.1649956 | 2.6301772 |
| 2000 | 3 | 46 | 0.9436433 | 0.3485941 | 0.3175564 | 0.5180344 |
| 2000 | 4 | 28 | 3.7292922 | 0.5784423 | 1.4896271 | 0.5504568 |
| 2005 | 1 | 78 | -0.0033210 | 0.1301665 | -0.4256291 | 0.8865284 |
| 2005 | 2 | 2 | 14.5174481 | 0.9139525 | 4.6658382 | 3.3271397 |
| 2005 | 3 | 48 | 1.0268456 | 0.3407314 | 0.3163725 | 0.6076152 |
| 2005 | 4 | 31 | 3.8388041 | 0.5803082 | 1.5180852 | 0.5304710 |
| 2010 | 1 | 72 | -0.0075196 | 0.1305729 | -0.4255457 | 0.8846915 |
| 2010 | 2 | 3 | 15.0019971 | 0.8735384 | 4.6721549 | 3.7370199 |
| 2010 | 3 | 50 | 1.0798044 | 0.3240399 | 0.2869002 | 0.6881534 |
| 2010 | 4 | 37 | 3.5539436 | 0.5877152 | 1.4741893 | 0.4792312 |
# Visualize cluster characteristics
ggplot(cluster_characteristics, aes(x = mean_attribute_status, y = mean_network_status,
size = n_countries, color = as.factor(cluster))) +
geom_point(alpha = 0.7) +
facet_wrap(~ year) +
labs(x = "Mean Attribute-Based Status", y = "Mean Network-Based Status",
size = "Number of Countries", color = "Cluster",
title = "Cluster Characteristics by Year") +
theme_minimal()Now, let’s attempt to map these clusters to traditional IR categories based on their characteristics:
# Define IR categories based on cluster analysis
# We'll create a new categorical variable based on cluster membership and status scores
integrated_status <- integrated_status %>%
mutate(
ir_category = case_when(
# This is a placeholder - we'll refine based on our analysis
cluster == 2 ~ "Great Power",
cluster == 4 ~ "Major Power",
cluster == 3 & combined_status_score > 0 ~ "Regional Power",
cluster == 3 & combined_status_score <= 0 ~ "Middle Power",
cluster == 1 & combined_status_score > -0.5 ~ "Small Power",
TRUE ~ "Minor Power"
)
)
# Count countries in each IR category by year
ir_category_counts <- integrated_status %>%
group_by(year, ir_category) %>%
summarise(count = n()) %>%
ungroup()
# Display counts
ggplot(ir_category_counts, aes(x = as.factor(year), y = count, fill = ir_category)) +
geom_bar(stat = "identity", position = "dodge") +
labs(x = "Year", y = "Number of Countries", fill = "IR Category",
title = "Distribution of Countries Across IR Categories by Year") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))# List countries in the Great Power and Major Power categories
power_countries <- integrated_status %>%
filter(ir_category %in% c("Great Power", "Major Power")) %>%
select(year, country, ir_category, combined_status_score) %>%
arrange(year, ir_category, desc(combined_status_score))
# Display power countries
power_countries %>%
kable("html", caption = "Countries Classified as Great Powers or Major Powers") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE) %>%
collapse_rows(columns = c(1, 3), valign = "top")| year | country | ir_category | combined_status_score |
|---|---|---|---|
| 1960 | United States | Major Power | 3.0086128 |
| France | 2.3037680 | ||
| United Kingdom | 2.0454482 | ||
| Italy | 1.5800123 | ||
| Japan | 1.1205146 | ||
| Belgium | 1.0864465 | ||
| Netherlands | 1.0858598 | ||
| 1965 | United States | Great Power | 3.4211763 |
| United Kingdom | Major Power | 2.2126755 | |
| France | 2.1987822 | ||
| Italy | 1.6494158 | ||
| Belgium | 1.3147396 | ||
| India | 1.2148042 | ||
| Japan | 1.0069268 | ||
| Netherlands | 0.9871731 | ||
| 1970 | United States | Great Power | 3.6065137 |
| France | Major Power | 2.1508980 | |
| United Kingdom | 2.0271376 | ||
| Italy | 1.5210700 | ||
| Japan | 1.3775047 | ||
| India | 1.3293003 | ||
| Belgium | 1.0902269 | ||
| Netherlands | 1.0229155 | ||
| Canada | 0.9670460 | ||
| 1975 | United States | Great Power | 3.6548453 |
| France | Major Power | 2.2124225 | |
| United Kingdom | 2.0544217 | ||
| Japan | 1.5899470 | ||
| India | 1.5360593 | ||
| Italy | 1.5204139 | ||
| China | 1.3216996 | ||
| Canada | 1.1887287 | ||
| Belgium | 1.1793646 | ||
| Egypt | 1.1464717 | ||
| Netherlands | 1.0848994 | ||
| 1980 | United States | Great Power | 3.7345839 |
| France | Major Power | 2.3027900 | |
| United Kingdom | 2.1107535 | ||
| China | 1.9536645 | ||
| Belgium | 1.5738503 | ||
| Japan | 1.5694991 | ||
| Italy | 1.5630169 | ||
| Canada | 1.4425732 | ||
| India | 1.3829457 | ||
| Netherlands | 1.2259924 | ||
| Spain | 1.1669497 | ||
| Brazil | 1.1137573 | ||
| Portugal | 1.0058543 | ||
| Sweden | 0.9218910 | ||
| 1985 | United States | Great Power | 3.9938613 |
| France | Major Power | 2.1575102 | |
| United Kingdom | 2.1513962 | ||
| China | 2.0739836 | ||
| Belgium | 1.7662236 | ||
| Italy | 1.7277926 | ||
| Japan | 1.5929473 | ||
| India | 1.5747371 | ||
| Canada | 1.3203892 | ||
| Netherlands | 1.1951178 | ||
| Spain | 1.1518908 | ||
| Brazil | 1.0705418 | ||
| Sweden | 0.9190696 | ||
| 1990 | United States | Great Power | 4.2931486 |
| France | Major Power | 2.3556482 | |
| China | 2.2960675 | ||
| United Kingdom | 2.2389526 | ||
| Germany | 1.9980488 | ||
| Italy | 1.8713244 | ||
| India | 1.8676743 | ||
| Japan | 1.8410710 | ||
| Belgium | 1.8160922 | ||
| Canada | 1.6499930 | ||
| Spain | 1.3634658 | ||
| Netherlands | 1.3228426 | ||
| Brazil | 1.2462010 | ||
| Egypt | 1.1241290 | ||
| Sweden | 1.0517184 | ||
| Turkey | 0.9230842 | ||
| Australia | 0.8715903 | ||
| Denmark | 0.8529472 | ||
| Portugal | 0.8491690 | ||
| 1995 | United States | Great Power | 4.5327478 |
| China | 3.0840259 | ||
| France | Major Power | 2.7983754 | |
| Germany | 2.6295904 | ||
| United Kingdom | 2.5409477 | ||
| Belgium | 2.3399085 | ||
| Russia | 2.2483705 | ||
| Italy | 2.1445575 | ||
| Japan | 2.0968391 | ||
| India | 2.0590868 | ||
| Canada | 2.0257615 | ||
| Spain | 1.7136510 | ||
| Netherlands | 1.5846662 | ||
| Brazil | 1.5287506 | ||
| Sweden | 1.3834026 | ||
| Egypt | 1.3366633 | ||
| Turkey | 1.2893358 | ||
| Austria | 1.2004004 | ||
| Mexico | 1.1835412 | ||
| Greece | 1.1805389 | ||
| Denmark | 1.1620333 | ||
| Portugal | 1.0923640 | ||
| Argentina | 1.0011296 | ||
| Australia | 0.9980970 | ||
| Korea, Republic of | 0.9654244 | ||
| Norway | 0.9524204 | ||
| Nigeria | 0.9463691 | ||
| Venezuela | 0.8988813 | ||
| Indonesia | 0.8753072 | ||
| 2000 | United States | Great Power | 4.5893171 |
| China | 3.7406740 | ||
| France | Major Power | 2.6410322 | |
| Germany | 2.5866559 | ||
| United Kingdom | 2.4678750 | ||
| Russia | 2.2023021 | ||
| India | 2.1488373 | ||
| Italy | 2.1235826 | ||
| Belgium | 2.0880536 | ||
| Japan | 2.0244101 | ||
| Canada | 1.9530458 | ||
| Spain | 1.6142967 | ||
| Netherlands | 1.5648890 | ||
| Brazil | 1.4521960 | ||
| Egypt | 1.2803820 | ||
| Sweden | 1.2501302 | ||
| Turkey | 1.2231078 | ||
| Mexico | 1.1603522 | ||
| Korea, Republic of | 1.0980131 | ||
| Denmark | 1.0926436 | ||
| Greece | 1.0821719 | ||
| Austria | 1.0516463 | ||
| Portugal | 1.0381607 | ||
| Poland | 0.9828276 | ||
| Indonesia | 0.9716829 | ||
| Hungary | 0.9687722 | ||
| Argentina | 0.9334524 | ||
| South Africa | 0.9201962 | ||
| Norway | 0.9088155 | ||
| Australia | 0.8800293 | ||
| 2005 | United States | Great Power | 5.1039043 |
| China | 4.2277722 | ||
| France | Major Power | 2.6819014 | |
| Germany | 2.5517816 | ||
| India | 2.4902800 | ||
| United Kingdom | 2.4284629 | ||
| Italy | 2.2089925 | ||
| Russia | 2.2018975 | ||
| Japan | 2.1123534 | ||
| Belgium | 2.1009766 | ||
| Canada | 2.0185212 | ||
| Spain | 1.7003830 | ||
| Netherlands | 1.5915032 | ||
| Brazil | 1.5484047 | ||
| Egypt | 1.4623084 | ||
| Poland | 1.3085692 | ||
| Sweden | 1.2934285 | ||
| Mexico | 1.2863955 | ||
| Turkey | 1.2576341 | ||
| Austria | 1.2074910 | ||
| Greece | 1.2018228 | ||
| Korea, Republic of | 1.1597113 | ||
| South Africa | 1.1579433 | ||
| Portugal | 1.1437909 | ||
| Denmark | 1.1304875 | ||
| Indonesia | 1.0959979 | ||
| Hungary | 1.0939477 | ||
| Australia | 1.0237319 | ||
| Argentina | 0.9569454 | ||
| Nigeria | 0.9545242 | ||
| Norway | 0.9541387 | ||
| Czech Republic | 0.8839941 | ||
| Algeria | 0.8523200 | ||
| 2010 | China | Great Power | 5.6727886 |
| United States | 5.4776873 | ||
| India | 2.8659886 | ||
| France | Major Power | 2.6337890 | |
| Germany | 2.5928686 | ||
| United Kingdom | 2.4281251 | ||
| Russia | 2.3729813 | ||
| Japan | 2.2420667 | ||
| Italy | 2.2129406 | ||
| Belgium | 2.1813942 | ||
| Canada | 2.0409978 | ||
| Spain | 1.8357531 | ||
| Brazil | 1.7766592 | ||
| Netherlands | 1.7728123 | ||
| Egypt | 1.5072451 | ||
| Turkey | 1.4393266 | ||
| Denmark | 1.3762201 | ||
| Mexico | 1.3576712 | ||
| Poland | 1.3571823 | ||
| Korea, Republic of | 1.3548716 | ||
| Greece | 1.3340882 | ||
| South Africa | 1.3333851 | ||
| Sweden | 1.3079135 | ||
| Austria | 1.2921516 | ||
| Hungary | 1.2847846 | ||
| Portugal | 1.2360109 | ||
| Australia | 1.1974375 | ||
| Indonesia | 1.1471434 | ||
| Norway | 1.1313469 | ||
| Switzerland | 1.1284450 | ||
| Czech Republic | 1.0971304 | ||
| Romania | 1.0935627 | ||
| Argentina | 1.0472744 | ||
| Nigeria | 0.9874622 | ||
| Algeria | 0.9484050 | ||
| Bulgaria | 0.9293095 | ||
| Saudi Arabia | 0.9157255 | ||
| Malaysia | 0.9067380 | ||
| Chile | 0.8817067 | ||
| Finland | 0.8620776 |
Let’s analyze how stable these categories are over time:
# For countries that appear in multiple years, calculate how often they change categories
country_stability <- integrated_status %>%
select(country, year, ir_category) %>%
arrange(country, year) %>%
group_by(country) %>%
mutate(
next_category = lead(ir_category),
category_change = ifelse(is.na(next_category), FALSE, ir_category != next_category)
) %>%
filter(!is.na(next_category)) %>%
summarise(
years_observed = n() + 1, # +1 because we lose one observation with lead()
category_changes = sum(category_change, na.rm = TRUE),
stability_pct = 100 * (1 - category_changes / (years_observed - 1))
) %>%
arrange(desc(years_observed), desc(stability_pct))
# Display stability analysis
country_stability %>%
filter(years_observed > 2) %>% # Focus on countries observed multiple times
head(20) %>% # Top 20 most frequently observed countries
kable("html", caption = "Stability of IR Categories for Frequently Observed Countries") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)| country | years_observed | category_changes | stability_pct |
|---|---|---|---|
| Belgium | 11 | 0 | 100 |
| France | 11 | 0 | 100 |
| Italy | 11 | 0 | 100 |
| Japan | 11 | 0 | 100 |
| Lao People’s Democratic Republic | 11 | 0 | 100 |
| Netherlands | 11 | 0 | 100 |
| Taiwan | 11 | 0 | 100 |
| United Kingdom | 11 | 0 | 100 |
| Argentina | 11 | 1 | 90 |
| Australia | 11 | 1 | 90 |
| Austria | 11 | 1 | 90 |
| Brazil | 11 | 1 | 90 |
| Cameroon | 11 | 1 | 90 |
| Canada | 11 | 1 | 90 |
| Denmark | 11 | 1 | 90 |
| Dominican Republic | 11 | 1 | 90 |
| Greece | 11 | 1 | 90 |
| Guinea | 11 | 1 | 90 |
| Iran | 11 | 1 | 90 |
| Luxembourg | 11 | 1 | 90 |
# Calculate overall stability
overall_stability <- mean(country_stability$stability_pct, na.rm = TRUE)The overall stability of IR category assignments across years is approximately 77.20%.
Let’s create a visualization that shows the status space with countries colored by their IR category:
# Create a plot for each year
status_plots <- list()
for(yr in unique(integrated_status$year)) {
year_data <- integrated_status %>% filter(year == yr)
# Filter to label only Great and Major powers
label_data <- year_data %>%
filter(ir_category %in% c("Great Power", "Major Power"))
p <- ggplot(year_data, aes(x = attribute_status_pca, y = overall_status_network_pca)) +
geom_point(aes(color = ir_category), alpha = 0.7) +
geom_text_repel(data = label_data, aes(label = country), max.overlaps = 15, size = 3) +
labs(x = "Attribute-Based Status", y = "Network-Based Status",
title = paste("Status Space and IR Categories -", yr),
color = "IR Category") +
theme_minimal()
status_plots[[as.character(yr)]] <- p
}
# Display plots for selected years
grid.arrange(
status_plots[[as.character(min(unique(integrated_status$year)))]],
status_plots[[as.character(max(unique(integrated_status$year)))]],
ncol = 2
)Let’s assess the face validity of our IR categorization by comparing it to commonly accepted lists of great powers, major powers, etc. from the IR literature.
# For each year, extract the countries we classified as Great Powers
our_great_powers <- integrated_status %>%
filter(ir_category == "Great Power") %>%
group_by(year) %>%
summarise(our_great_powers = paste(country, collapse = ", ")) %>%
ungroup()
# Display our great powers
our_great_powers %>%
kable("html", caption = "Our Classification of Great Powers by Year") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)| year | our_great_powers |
|---|---|
| 1965 | United States |
| 1970 | United States |
| 1975 | United States |
| 1980 | United States |
| 1985 | United States |
| 1990 | United States |
| 1995 | China, United States |
| 2000 | China, United States |
| 2005 | China, United States |
| 2010 | China, India, United States |